#include <bits/stdc++.h>

using namespace std;

const int MAXN = 2000 + 10, MAXA = 2000 + 10, MAXNN = 2e5 + 10;
long long dp[MAXN][2][MAXA];//dp[i][last one: red/bule][last different color (be different from the last color) A's value]
long long dp2[MAXNN][2][10 + 5];
long long a[MAXNN];
int n;

long long dfs(int d, bool cl, int la)//la: last a
{
    if (dp[d][cl][la] != -1) return dp[d][cl][la];
    if (d > n) return 0;
    long long add1 = 0, add2 = 0;
    if (a[d] == la) add1 = a[d];
    if (a[d] == a[d - 1]) add2 = a[d];
    return dp[d][cl][la] = max(dfs(d + 1, cl ^ 1, a[d - 1]) + add1, dfs(d + 1, cl, la) + add2);
}

long long dfs2(int d, bool cl, int la)//la: last a
{
    if (dp2[d][cl][la] != -1) return dp2[d][cl][la];
    if (d > n) return 0;
    long long add1 = 0, add2 = 0;
    if (a[d] == la) add1 = a[d];
    if (a[d] == a[d - 1]) add2 = a[d];
    return dp2[d][cl][la] = max(dfs2(d + 1, cl ^ 1, a[d - 1]) + add1, dfs2(d + 1, cl, la) + add2);
}

int main()
{
    freopen("color.in", "r", stdin);
    freopen("color.out", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    int T;
    cin >> T;
    while (T--)
    {
        cin >> n;
        long long maxn = 0;
        for (int i = 1; i <= n; ++i)
        {
            cin >> a[i];
            maxn = max(maxn, a[i]);
        }
        if (n > 2000 && maxn <= 10)
        {
            memset(dp2, -1, sizeof(dp2));
            cout << max(dfs2(2, 0, 0), dfs2(2, 1, a[1])) << endl;
        }
        else
        {
            memset(dp, -1, sizeof(dp));
            cout << max(dfs(2, 0, 0), dfs(2, 1, a[1])) << endl;//I make color[1] = 0
        }
    }
    return 0;
}
